import os
import sys
import time
import subprocess
import threading
import glob


Exit = False


# 修改标题、展示动画
def title_ani(title):
    global Exit
    a = ['|', '/', '-', '\\', '|']

    k = 0
    while True:
        if Exit:
            sys.exit()

        subprocess.Popen('title "{} {}"'.format(title, a[k]), shell=True)
        k += 1
        if k >= len(a):
            k = 0
        time.sleep(0.1)


threading.Thread(target=title_ani, args=('请稍等……', )).start()

try:
    # 第一步：关闭系统资源管理器
    print('第一步：关闭系统资源管理器')
    subprocess.Popen('taskkill /f /im explorer.exe', shell=True)
    time.sleep(1)  # 等待进程结束

    # 第二步：获取用户名
    print('第二步：获取用户名')
    username = os.getlogin()
    print(f'    当前用户名: {username}')
    time.sleep(0.3)

    # 第三步：删除用户目录下iconCache
    print('第三步：删除用户目录下iconCache')
    cache_path = f'C:\\Users\\{username}\\AppData\\Local\\Microsoft\\Windows\\Explorer\\iconcache*.db'
    deleted_files = []

    for db_file in glob.glob(cache_path):
        try:
            os.remove(db_file)
            deleted_files.append(os.path.basename(db_file))
            print(f'    已删除: {db_file}')
        except Exception as e:
            print(f'    删除失败 {db_file}: {str(e)}')

    if not deleted_files:
        print('    未找到iconcache文件')

    # 第四步：重启系统资源管理器
    print('第四步：重启系统资源管理器')
    subprocess.Popen('start explorer.exe', shell=True)
    print('操作完成！资源管理器已重启')
    print('搞定')
    time.sleep(3)

except Exception as e:
    print(f'程序执行出错: {str(e)}')
    # 确保出错时尝试重启资源管理器
    subprocess.Popen('explorer.exe', shell=True)
    print('已尝试重启资源管理器')

Exit = True
sys.exit()
